#ifndef BSW_GPIO_H_
#define BSW_GPIO_H_


#include 	"stdint.h"


#define D_in 		0		/*输入*/
#define D_out 	1		/*输出*/

#define Bsw_Port_A		1
#define Bsw_Port_B		2
#define Bsw_Port_C		3
#define Bsw_Port_D		4
#define Bsw_Port_E		5


#define PTD15 15 	/* RED LED*/
#define PTD16 16 	/* GREEN LED*/
#define PTD0 	0   /* BLUE LED */


/********************************************************
**函数名：	BSW_GPIO_MUX_CONFIG
**功能：		初始化端口的复用功能
**输入参数：u8_Port 选定需要配置的引脚
**					u32_Pin 设置的PIN脚 
**					mux设置功能
**返回值：	无
**注意：		例如: 设置PTE_8的复用功能2 - FTM0_CH6
**								Bsw_Port_E,PIN8_IDX,PORT_MUX_ALT2
*********************************************************/
void BSW_GPIO_MUX_CONFIG(uint8_t u8_Port,uint32_t u32_Pin,port_mux_t mux);

/********************************************************
**函数名：	BSW_GPIO_IRQ_CONFIG
**功能：		初始化端口的复用功能
**输入参数：u8_Port 选定需要配置的引脚
**					u32_Pin 设置的PIN脚 
**					mux设置功能
**返回值：	无
**注意：		例如: 设置PTE_8的复用功能2 - FTM0_CH6
**								Bsw_Port_E,PIN8_IDX,PORT_MUX_ALT2
**								intConfig  PORT_DMA_INT_DISABLED
*********************************************************/
void BSW_GPIO_IRQ_CONFIG(uint8_t u8_Port,uint32_t u32_Pin,port_interrupt_config_t intConfig);

/********************************************************
**函数名：	BSW_GPIO_Direction
**功能：		设置GPIO的输入输出模式
**输入参数：GPIO_Type 指定的端口
**					u32_Pin 设置的PIN脚 
**					Direction 设置端口的方向
**返回值：	无
**注意：		例如: PTA8 设置为输出 PTA PIN8_IDX 1
*********************************************************/
void BSW_GPIO_Direction(GPIO_Type *u32_Gpio_base,uint32_t u32_Pin,uint8_t Direction);

/********************************************************
**函数名：	BSW_GPIO_SetBits
**功能：		设置指定的PIN脚输出高
**输入参数：GPIO_Type GPIO端口地址,u32_Pin 设置的PIN脚
**返回值：	无
**注意：		例如 	置位PTD15为高电平
**					GPIO_Type: 	PTD	     u32_Pin:				15
*********************************************************/
void BSW_GPIO_SetBits(GPIO_Type *base, uint32_t u32_Pin);

/********************************************************
**函数名：	BSW_GPIO_ResetBits
**功能：		设置指定的PIN脚输出低
**输入参数：GPIO_Type GPIO端口地址,u32_Pin 设置的PIN脚
**返回值：	无
**注意：		例如 	复位PTD15为低电平
**					GPIO_Type: 	PTD	     u32_Pin:				15
*********************************************************/
void BSW_GPIO_ResetBits(GPIO_Type *base, uint32_t u32_Pin);

/********************************************************
**函数名：	BSW_GPIO_OPPOSITE
**功能：		翻转指定引脚的电平
**输入参数：GPIO_Type GPIO端口地址,u32_Pin 设置的PIN脚
**返回值：	无
**注意：		例如 	翻转PTD15的电平
**					GPIO_Type: 	PTD	     u32_Pin:				15
*********************************************************/
void BSW_GPIO_OPPOSITE(GPIO_Type *base, uint32_t u32_Pin);


uint8_t BSW_GPIO_ReadBit(GPIO_Type *base, uint32_t u32_Pin);

#endif
